﻿#pragma once
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#ifdef __cplusplus
extern"C" {
#endif

	//1.先定义所需的数据信息结构；
	struct DynamicArr
	{
		//2.数组存储元素的空间的首地址；
		void** addr;
		//3.存储数据的内存空间，最大可存储的元素的容量空间；也就是最大存储元素的个数；
		int capacity;
		//4.当前存储数据的内存空间，存储的元素个数；当前已经存储元素的个数；
		int size;
	};

	//5.初始化数组；
	struct DynmicArr* Init_DynamicArr(int capacity);
	//6.插入元素；
	void Insert_DynamicArr(struct DynamicArr* arr, int pos, void* data);
	//7.遍历；
	void Foreach_DynamicArr(struct DynamicArr* arr, void(*_callback)(void*));
	//21.按位置删除元素；
	void RemoveByPos_DynamicArr(struct DynamicArr* dArr, int pos);
	//23.按值删除元素；
	void RemoveByValue_DynamicArr(struct DynamicArr* dArr, void* data, int(*compare)(void*, void*));
	//25.销毁动态数组dArr；
	void Destroy_DynamicArr(struct DynamicArr* dArr);

#ifdef __cplusplus
}
#endif